import axios from 'axios'
import NProgress from "nprogress";
import "nprogress/nprogress.css";
import {ElMessage} from "element-plus";
import {defineUser} from "../stores/userStore.js";
import pinia from "../stores/pinia.js";
import {getToken} from "../utils/token-tuils.js";

//  创建instance实例
const instance = axios.create({
    // baseURL: 'http://localhost:8080/',
    timeout: 50000
})

//  添加请求拦截
instance.interceptors.request.use((config) => {
        // 如果有token, 通过请求头携带给后台

        let user = defineUser(pinia) // 如果不是在组件中调用,必须传入pinia
        const token = getToken()
        if (token) {
            (config.headers)['token'] = token
        }
        return config;
    }
)

// 添加响应拦截器
instance.interceptors.response.use(
    (response) => {
        // NProgress.done()//关闭进度条
        if (response.data.code !== 2000) {
            // 判断响应状态码
            if (response.data.code === 4013) return Promise.reject(ElMessage.error("用户名重复"))
            else if (response.data.code === 4010) return Promise.reject(ElMessage.error("未登录"))
            else if (response.data.code === 4000) return Promise.reject(ElMessage.error("请求参数错误"))
            else if (response.data.code === 4001) return Promise.reject(ElMessage.error("请求数据为空"))
            else if (response.data.code === 4010) return Promise.reject(ElMessage.error("未登录"))
            else if (response.data.code === 4011) return Promise.reject(ElMessage.error("无权限"))
            else if (response.data.code === 5000) return Promise.reject(ElMessage.error("系统内部异常"))
            else if (response.data.code === 4012) return Promise.reject(ElMessage.error("账号或密码错误"))
            else if (response.data.code === 4014) return Promise.reject(ElMessage.error("两次密码不一致"))
            else if (response.data.code === 4013) return Promise.reject(ElMessage.error("用户名重复"))
        } else {
            return response; /* 返回成功响应数据中的data属性数据 */
        }
    },
    (error) => {
        // NProgress.done()//关闭进度条
        return Promise.reject(error.message);
    }
);
// 默认导出
export default instance